package com.thinkgem.jeesite.modules.gen.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.google.common.collect.Lists;
import com.thinkgem.jeesite.kpoint.core.base.KpointBaseEntity;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.util.List;


/**
 * 项目配置Entity
 * @author kongxiangsheng
 * @version 2018-11-05
 */
@Data
@TableName(resultMap = "GenProjectRM")
public class GenProject extends KpointBaseEntity {
    public static final String COL_CODE = "`code`";
    public static final String COL_SHORT_CODE = "`short_code`";
    public static final String COL_NAME = "`name`";
    public static final String COL_TABLE_PREFIX = "`table_prefix`";
    public static final String COL_BASE_PACKAGE = "`base_package`";
    public static final String COL_BASE_COLUMNS = "`base_columns`";
    public static final String COL_ENCODED = "`encoded`";
    public static final String COL_PARSE_TYPE = "`parse_type`";

    private static final long serialVersionUID = 1L;
    /**
     * 项目编码
     */
    @Length(min=1, max=20, message="项目编码长度必须介于 1 和 20 之间")
    private String code;
    /**
     * 项目编码简写
     */
    @Length(min=1, max=20, message="项目编码长度必须介于 1 和 20 之间")
    private String shortCode;
    /**
     * 项目名称
     */
    @Length(min=1, max=20, message="项目名称长度必须介于 1 和 20 之间")
    private String name;
    /**
     * 项目表前缀
     */
    @Length(min=1, max=20, message="项目表前缀长度必须介于 1 和 20 之间")
    private String tablePrefix;
    /**
     * 项目基础包
     */
    @Length(min=1, max=100, message="项目基础包长度必须介于 1 和 100 之间")
    private String basePackage;
    /**
     * 项目基础字段
     */
    private String baseColumns;
    /**
     * 项目树形结构的基础字段
     */
    private String baseTreeColumns;
    /**
     * 编码格式
     */
    @Length(min=0, max=10, message="编码格式长度必须介于 0 和 10 之间")
    private String encoded;
    /**
     * 解析类型（freemarker or beetl）
     */
    @Length(min=0, max=20, message="编码格式长度必须介于 0 和 20 之间")
    private String parseType;
    /**
     * 子表列表
     */
    @TableField(exist = false)
    private List<GenProjectModule> genProjectModuleList = Lists.newArrayList();
}